ФАЙЛ КОНФИГУРАЦИИ LDBF.CONF

В файле etc/ldbf.conf прописывается среда базы данных. Он читается каждый раз при подключении нового клиента и устанавливает для клиента допустимую для него среду.Даже при запущенном сервере, etc/ldbf.conf можно модифицировать и новые клиенты сразу начнут использовать измененные значения.

Данные параметры могут быть указаны только один раз

Данный параметер может иметь значение 1 или 0. Он определяет будет ли информация о транзакциях сохраняться в журнале транзакции или нет при запуске сервера. Если установлен в 1,файл транзакций будет очищен при запуске сервера.Все незаконченные транзакции предварительно будут завершены. Вы можете произвести анализ файлов транзакции с помощью утилиты ldbflog.

Пример:

empty_tts = 1

Допустимые значения: 1 или 0. Если параметр установлен в 1, то при запуске сервера файл ldbf.log будет создаваться заново. Иначе информация будет дописываться в конец файла.

Пример:

log_new = 0

Допустимые значения 0 .. 9. Определяет уровень информации, записываемой в файл ldbf.log.Чем больше значение, тем больше пишется в ldbf.log

Пример:

log_level = 2

Допустимые значение 0..9999.Определяет максимальное количество изменений таблицы базы данных, через которое она будет записана на диск. В основном, по возможности,информация из таблиц содержится в кэшах сервера.По умолчанию flush_count установлен в значение 5. Для обеспечении большей надежности по сохранению базы данных рекомендуется установить данный парамер в значение 1.

Пример:

flush_count = 10

Допустимые значения 0 или 1. При установленом значении в 0, сервер не использует собственых буферов памяти для кэширования. Данный параметр может быть полезен при наличии большой оперативной памяти,так как при значении 1,сервер использует около 1 мегабайта оперативной памяти. В операциях поиска при включенной оптимизации может быть достигнута более быстрая реакция сервера.

Пример:

optimize = 1

Допустимые значения 0 или 1. При установленом значении в 1, сервер использует системный вызов fsync для сброса данных на диск всех данных записанных в файл.Это обеспечит большую надежность сервера,но при частых обновлениях таблиц может быть причиной большего времени отклика от сервера.

Пример:

use_fsync = 1

Допустимые значения 0 или 1. Данный параметр является системно-зависимым. Необходимо проконсультироваться с ситемным администратором для выяснения поддерживает или нет Ваша система специальный файл для храненния паролей (shadow). При установленом значении в 1, для сверки паролей пользователей, сервер использует shadow ( в этом случае сервер должен иметь привелегии суперпользователя ).

Для систем SYS V (3.2 - 4.4) и BSD/OS 2.x данный параметр должен быть установлен в 1. Для Linux по умолчанию установлен в 0. Если у Вас установлен пакет поддержки shadow установите параметер shadow в 1.

Пример:

shadow = 1

Допустимые значения 1 .... 99 Данный параметр определяет интервал, через который сервер проверяет расписание фоновых задач и проверки других внутренних задач сервера.Не рекомендуется устанавливать данный параметр в слишком большое значение.

Пример:

schedule_interval = 5

Допустимые значения 0 или 1. Данный параметр указывает процессу репликации(replication),что после окончания копирования транзакций,необходимо закрыть сессию.Если интервал между копированием достаточно большой,рекомендуется закрывать соединение.

Пример:

replica_close = 1

Синтаксис:

replica_server=HOST[,PORT[,INTERVAL]]

Данный параметр определяет сервер,куда будут копироваться транзакции данного сервера.Необходимо указать адрес хоста(HOST) на котором запущен сервер LDBF. Дополнительно можно указать порт(PORT) удаленного сервера и интервал(INTERVAL),через который сканировать журнал транзакций на присутствие новых транзакций и копировать их на реплика сервер.По умолчанию,репликация осуществляется через каждую 1 минуту. Если соединение с реплика сервером не установлено,реплика процесс пытается соединится с реплика сервером и в случае неудачи откладывает репликацию до следующего интервала.

Пример:

replica_server = hawk,7960,0.5

Данный параметер позволяет/запрещает членам группы администратора запускать ldbfmonitor или ldbfdcgi. Допустимые значения 0 или 1. Данные программы использует разделяемую память (shared memory) для доступа к серверу. Данный параметр определяет как сервер будет устанавливать права доступа к этой памяти,а также, будут ли другие программы использующие разделяемую память для доступа к серверу иметь право на соединение.

Для доступа к разделяемой памяти необходимо иметь права доступа.Они определяются тем же способом, что и права к файлам в системе UNIX.Если приложение запущено тем же пользователем, что и сервер, оно имеет полный доступ к разделяемой памяти.При установленном group_allow в 1,приложение запущенное пользователем, входящим в группу LDBF сервера также имеет доступ к разделяемой памяти.Все другие пользователи не имеют прав на доступ к разделяемой памяти.

Пример:

group_allow = 1 /* Разрешить запуск монитора */

group_allow = 0 /* Запретить запуск монитора */

Нижеследующие параметры могут быть указаны более чем один раз

Синтаксис:

alias ALIAS = TABLE_PATH

Данный параметер определяет таблицу базы даных. Это, так называемый, псевдоним(ALIAS) таблицы. Клиент осуществляет доступ к таблицам только через алиасы. Данный параметер ставит в соответствие алиасу определенный DBF файл(TABLE_PATH).

ALIAS - это псевдоним (алиас) таблицы;

TABLE_PATH - это полный путь к файлу данных.

Для того чтобы создать новую таблицу необходимо произвести следующие действия:

Пример:

alias bucks=bucks

alias names=/tmp/names

Нельзя менять порядок следования алиасов и удалять их при запущенном сервере. Разрешается только добавлять новые алиасы в конец списка.

Этот параметер нельзя модифицировать при запущенном сервере .

Синтаксис:

access_allow = USERNAME[@HOST][,USERNAME@HOST]...

Данный параметер определяет права доступа к серверу. В нем указаны кто и с каких хостов имеют доступ к данной базе данных. Для определения пользователей используется принятая в Internet терминология. Может быть указано только имя и тогда пользователь с этим именем имеет доступ в сервер с любой машины, а может быть указан полный адрес, включая имя и хост. Тогда только с этого хоста пользователь с данным именем имеет доступ к серверу.Если Вам необходимо открыть доступ целому домену,Вы можете поставить звездочку '*' перед именем домена.Этим самым определяется маска доступа и все хосты, удовлетворяющие этой маске будут иметь доступ к серверу.

Пример:

access_allow=vlad,joy@torn
access_allow=@*kharkov.ua

Синтаксис:

open_deny = ALIAS,USER[,USER[,.......]

Определяет кто не имеет прав на доступ к данной таблице. ALIAS-это псевдоним таблицы, а USER - имя пользователя, которому запрещено открывать данную таблицу. Может включать как имя, так и полный адрес. (см. параметр access_allow)

Пример:

open_deny=names,sasha,joy@torn

open_deny = bucks, sasha

Синтаксис:

open_deny_except = ALIAS,USER[,USER[,.......]

Аналогичен параметру open_deny, только определяет, что все пользователи кроме указаных не имеют права на открытие данной таблицы. ALIAS-это псевдоним таблицы, а USER - имя пользователя, которому разрешено открывать данную таблицу. Может включать как имя, так и полный адрес.(см. параметр access_allow)

Пример:

open_deny_except=names,sasha,joy@torn

open_deny_except = bucks, sasha

Синтаксис:

read_only=ALIAS,USER[,USER,...]

Определяет доступ только на чтение. Указанным пользователям можно открыть данную таблицу только в режиме для чтения.(см. параметр access_allow)

Пример:

read_only=names,vlad@torn,joy

read_only=bucks,joy

Синтаксис:

read_only_except=ALIAS,USER[,USER,...]

Аналогичен параметру read_only, только всем кроме указанных пользователей можно открыть данную таблицу в режиме для чтения.(см. параметр access_allow)

Пример:

read_only=names,vlad@torn,joy

read_only=bucks,joy

Синтаксис:

create_allow = USER[,USER,...]

Определяет кому из пользователей разрешается создавать новые таблицы. По умолчанию пользователям не разрешается создавать новые таблицы.(см. параметр access_allow)
Данный параметр также влияет на выполнение функции ldbfCreateAliasDef и ldbfCreate.

Пример:

create_allow = vlad,joy@torn

Синтаксис:

drop_allow = USER[,USER,...]

Определяет кому из пользователей разрешается удалять таблицы. По умолчанию пользователям не разрешается удалять таблицы.(см. параметр access_allow)

Пример:

drop_allow = vlad,joy@torn

Синтаксис:

exchange_allow = USER[,USER,...]

Определяет кому из пользователей разрешается выполнять команду Exchange. Смотрите описание функции ldbfExchange()в разделе API. (см. параметр access_allow)

Пример:

exchange_allow = vlad

Синтаксис:

append_deny in ALIAS { condition }

Определяет правило, которое применяется перед добавлением записи в данную таблицу (ALIAS). Сondition есть любое S-Lang выражение. При выполнении условия добавления в таблицу не присходит, а клиенту возвращается код ошибки.

Следующие функции для доступа к полям записи допустимо использовать в условии правил:

Заметим, что первые три функции при указании проверяемой таблицы возвращают значения полей из обрабатываемой записи, будь-то добавление, изменение или удаление, а ldbfFound() производит поиск информации по любой таблице, не перемещая указатель текущей записи.

Пример:

append_deny in names {

((not(strcmp(ldbfStr("names","name"),"Scott"))) and

(ldbfLong("names","age") > 40) and (ldbfFound("names", "salary",5000))

}

Это правило не позволяет добавить запись в таблицу names если поле 'name' содержит 'Scott' и возраст больше 40 лет,и существует клиент с зарплатой 5000.

Синтаксис:

update_deny in ALIAS { condition }

Данное правило запрещает изменение таблицы (AALIAS) при выполнении заданного условия.

Пример:

update_deny in names {

((ldbfLong("names","age") == 0) or

(ldbfLong("names","age") < 20))

}

Это правило не позволяет изменить запись в таблице 'names', если возраст не указан или меньше, чем 20.

Синтаксис:

delete_deny in ALIAS { condition }

Данное правило не разрещает удаление записи в таблице (( ALIAS) при выполнении заданного условия.

Пример:

delete_deny in names {

(ldbfLong("names","age") < 40 )

}

Не разрешается удаление клиентов, у которых возраст меньше, чем 40 лет.

Синтаксис:

after_append in ALIAS call PROCEDURE { condition }

Данное правило выполняет процедуру PROCEDURE после успешного добавления записи в таблицу (ALIAS) и если добавленная запись удовлетворяет заданному условию condition. PROCEDURE является именем файла, написанном на языке S-Lang или именем процедуры, определенном в файле etc/ldbf.sl. Должен быть указан полный путь к файлу или путь относительно домашнего каталога сервера.

Пример:

after_append in names call check_append.sl {

(ldbfLong("names","age") < 25)

}

Выполнить check_append.sl при добавлении в таблицу 'names' и когда значение поля 'age' меньше чем 25.

Синтаксис:

after_update in ALIAS call PROCEDURE { condition }

Данное правило выполняет процедуру PPROCEDURE после успешного изменении записи в таблице (ALIAS) и если обновленная запись удовлетворяет заданному условию condition.PROCEDURE является именем файла, написанном на языке S-Lang или именем процедуры,определенной в файле etc/ldbf.sl. Должен быть указан полный путь к файлу или путь относительно домашнего каталога сервера.

Пример:

after_update in names call check_update.sl {

(ldbfLong("names","age") < 25 )

}

Синтаксис:

after_delete in ALIAS call PROCEDURE { condition }

Данное правило выполняет процедуру PROCEDURE после успешного удаления записи в таблице (ALIAS) и если удаленная запись удовлетворяет заданному условию condition. PROCEDURE является именем файла, написанном на языке S-Lang или именем процедуры, определенной в файле etc/ldbf.sl. Должен быть указан полный путь к файлу или путь относительно домашнего каталога сервера.

Пример:

after_delete in names call check_delete.sl {(1)}

Данное правило будет запускать процедуру check_delete.sl после каждого удаления в таблице 'names'.

Синтаксис:

procedure = PROCEDURE_NAME,PROCEDURE_PATH

Данный параметер описывает процедуру базы данных. PROCEDURE_NAME определяет имя данной процедуры, по которому будут вызывать процедуру, а PROCEDURE_PATH определяет путь к файлу, где хранится текст данной процедуры,также это может быть имя процедуры,определенной в файле etc/ldbf.sl. Только описанные процедуры могут быть вызваны с помощью функции ldbfCall() (см. описание LDBF API).

Пример:

procedure = check_append,check_append.sl

procedure = check_delete,/home/vlad/slang/check_delete.sl

Синтаксис:

call_deny = PROCEDURE_NAME,USER[,USER..]

Данный параметр определяет кому из пользователей запрещено вызывать данную процедуру. PROCEDURE_NAME - имя процедуры, описанное параметом procedure.

Пример:

call_deny = check_apend,vlad,joy@torn

Синтаксис:

call_deny_except = PROCEDURE_NAME,USER[,USER..]

Параметр аналогичен call_deny, только определяет, что всем кроме указанных пользователей запрещено вызывать данную процедуру. PROCEDURE_NAME - имя процедуры, описанное параметом procedure.

Пример:

call_deny_except = check_apend,vlad,joy@torn

Синтаксис:

event = EVENT_NAME

Данный параметер регистрирует события, которые могут произойти в системе. Только события, описанные в файле ldbf.conf могут быть использованы для передачи другим клиентам.См. описание функции ldbfRaiseEvent().

Пример:

event=alarm

event=You_are_fool

Синтаксис:

schedule_task = min hour day mon dow PROCEDURE

Определение фоновой задачи сервера.Каждая строка состоит из шести полей разделенных пробелами:

  1. минуты(0-59)
  2. часы (0-23)
  3. день месяца (1-31)
  4. месяц года(1-12)
  5. день недели(0-6 0=Воскресение)
  6. Имя процедуры базы данных
Каждое из первых пяти полей может содержать '*',которая означает любое значение или список значений через запятую.Значение есть число или два числа,разделенных тире(означает диапазон значений). Шестое поле содержит или путь к SLang файлу, или имя процедуры из etc/ldbf.sl файла.Каждая задача выполняется в фоновом режиме и является обыкновенным клиентом сервера с правами администратора.
Пример:

# запускать stat.sl каждое воскресение а 1:00 ночи
schedule_task= 0 1 * * 0 stored/stat.sl
# запускать backup_tables в 1:00 ночи 1 числа каждого месяца
schedule_task= 0 1 1 * * backup_tables